構成管理とは、ソフトウェア・ハードウェア・ネットワークなどのITシステムを構成する要素を最適な状態に保ち、全体のパフォーマンスを安定化させるために整備することです。
構成管理ツールを導入することで、ITシステムを一元的に管理できるようになります。
Ansible(アンシブル)は、レッドハットが開発するオープンソースの構成管理ツールです。サーバーを構築する際、あらかじめ用意した設定ファイルに従って、ソフトウェアのインストールや設定を自動的に実行する事が出来ます。
設定ファイルは、Playbookと呼ばれ、YAML形式のテキストファイルに手順を列挙することで使用できるというのが特徴です。
Playbookは大きく、トップレベルのPlaybook(site.ymlという名称になっていることが多い)と Role用のPlaybook(トップレベルのPlaybookから呼び出される役割毎のPlaybook)の2種類で構成されています。
また、インベントリーファイルと呼ばれる、操作対象のサーバや機器を列挙したファイルも必要となります。
Inventory fileとはAnsibleが複数のサーバーに対して処理を行う際に利用するファイルで、対象となるサーバーのIPアドレスやホスト名を列挙します。Best Practiceの例ではproductionとstagingの2ファイルが挙げられています。列挙する際に、[webservers]といった形でサーバーをグルーピングすることができます。このグルーピングを用いることで、複数サーバーをまとめることができ、グループ内のサーバーに対して同一のPlaybookを実行することができます。また、本番環境とステージング環境といったように複数環境が存在する場合に、このInventory fileを使い分けることで、環境間のIPアドレス等の差異を吸収できます。
Playbookに記載した処理をどのサーバ/機器に対して実行するかを定義するファイルです。同一の処理を行う機器のグループ分けや、接続にあたって個別に必要となるユーザやパスワード等の記載を行います。
Vars file(group_vars、host_varsでは、特定のグループやホストに対する変数の値を定義できます。ここでいう変数とは環境によって変化するものを示します。例えば、利用するライブラリのバージョンや、ファイルのパス、連携するサーバーのIPアドレス等を記載します。処理手順のようにに変化しないものに関しては、Playbookに記述します。これにより再利用性の高いPlaybookを作成することが可能となります。
Rolesは、サーバーの役割ごとにPlaybookを独立させるために用いられます。具体的な処理(Playbook)はtasks内のmain.ymlなどに記述します。
【 モジュール 】
Ansibleでは、様々な設定や機器を必要最小限のパラメータで制御することができますが、制御にあたっては管理対象に応じたモジュールを選択する必要があります。
最も基本的なモジュールでは、変数に応じてファイルを配置するtemplateモジュールやサービスの状態を制御するsystemdモジュールなどがあります。
Ansible 2.0以降、AWS/Azure/GCP/OpenStackをはじめとするクラウド関連モジュールや、Cisco/Juniper/F5などのネットワーク機器関連モジュールが重点的に展開されています。
ansible-playbook コマンドを実行して環境構築を行います。
本コマンドには、オプションとして、「構文確認」、「Dry Run」がありますので、インストール前に確認ができるようになっています。
ansible-playbook –i インベントリーファイル名 トップレベルのPlaybook名 オプション |
|
--syntax-chec | 構文確認を行います。 スペースやインデントの漏れ等の誤りを確認する事が出来ます。 Playbookに関しての確認となるためインベントリーファイルに誤りがあっても確認されません。 |
--check | DryRunを行います。 実際に操作対象の機器にログインして実行可能かどうかの確認を行います。一見動いたように見えますが実際に書き込んだりはしません。 ただし、ファイルを落としてきて展開するといった内容の場合、実際にファイルをローカルに持ってくることが無いので必ず失敗します。 |
Playbook, YAML
ansible, ansible-playbook
www.it-shikaku.jp